Jurgita Juskaite
CURRICULUM VITAE
+44(0)7513 005 609
 juskaite.jurgita@gmail.com
London

Summary


A little about me
Data Scientist with eight years of work experience using data engineering, analytics, machine learning and creative data visualization to solve challenging business problems. Passionate about applying advanced data science methods to create personalised user experience and help shoppers discover products they like.
My story

Hover on the timeline to see more information about each role

Data science techniques
Data science tools

Click on the bars to see more information about each technique

Click on the bars to see more information about each tool

Languages I speak
Where I learn data science
English Lithuanian Spanish
Things I
Ballet Yoga Theatre Photography Travel Cooking

Detailed View


Key technical skills
  • Ability to manipulate large volumes of data
  • Proficiency in SQL
  • Strong R programming skills
  • Extensive experience with various SAS tools (EG, EM, DI)
  • Thorough understanding of end-to-end modelling process: exploratory data analysis, sampling, feature engineering and selection, model validation and comparison
  • Extensive experience with statistical analysis techniques and machine learning algorithms (regression, decision trees, clustering, collaborative and content-based recommendation systems)
  • Experience deploying models to production
  • Good working knowledge of R Shiny, Tableau and data visualisation principles
  • Experience in spatial data analysis using ArcGIS, Tableau, and R
  • Advanced knowledge of Microsoft Excel and hands-on experience with VBA programming
  • Experience with version control tools (Git and Bitbucket)
  • Experience working in an agile environment
Professional experience

Senior Data Scientist London
The Very Group Sep 2019 to present

Working closely with a cross-functional personalisation team to identify and deliver projects that will drive email programme value through content personalisation.

  • Designed and developed a prototype solution for a content-based product recommendation engine that enhanced personalisation capabilities of our email trigger programme and delivered £360k incremental sales in a 6 week test period;
  • Developed and productionised a clothing size prediction algorithm that will allow to improve relevancy of the product-based email campaigns;
  • Identified and validated new data sources for more timely and accurate product price information, and developed a process to enable implementation of a price drop notification email. The programme generated £335k incremental sales in a 9 week experiment period with estimated annual benefits of £3.5m;
  • Mentored a masters student through CDRC Masters Research Dissertation Programme;
  • Supporting and training junior team members throughout the project to help them deliver at their best;
  • Assisting with recruitment of new team members by evaluating data challenge assignment and conducting interviews.

Data Scientist London
The Very Group Apr 2018 – Aug 2019

Modelling and Optimisation Analyst London
John Lewis Partnership Nov 2015 – Mar 2019

Scoping and developing predictive targeting models using customer transactional and behavioural data to improve personalisation and effectiveness of marketing communication programmes.

  • Developed a suit of propensity models to predict customer’s likelihood to shop in thirty different product categories which led to significantly improved email campaign personalisation and increased sales;
  • Applied association rule discovery algorithm to create product and brand level recommendations for fashion email campaigns;
  • Actively contributed to the development and automation of the modelling processes, model monitoring and performance reporting.

Campaign Analyst London
John Lewis Partnership Jul 2015 – Oct 2015

Supported John Lewis Division through the effective design and delivery of customer insight led marketing communications.

Insight Analyst London
Aimia Jan 2013 – Jun 2015

Worked on the marketing side of Nectar team providing marketing and analytical intelligence to help maximize the benefits of the loyalty programme.

MIS Analyst London
Essence Digital Feb 2011 – Dec 2012

Responsible for maintaining existing, and developing new processes for the daily transfer, import and transformation of marketing performance data combined from disparate sources (ad servers, search engines, client data).

Research Output Researcher, Talent Builder Training Programme Nottingham
University of Nottingham, Information Services Department Oct 2010 – Dec 2010

Education

The University of Nottingham Nottingham
MSc in Economics and Econometrics – 2:1 (Average: 68%) Sep 2009 – Sep 2010

Vilnius University Vilnius, Lithuania
BSc in Economics (Average: 9.4 in ten-grade system) Sep 2005 – Jun 2009

Language skills
  • English – Fluent
  • Spanish – Intermediate
  • Lithuanian – Native
References

Available on request.


LS0tDQp0aXRsZTogIkNWLUp1cmdpdGEgSnVza2FpdGUiDQpvdXRwdXQ6IA0KICBodG1sX25vdGVib29rOg0KICAgIHNlbGZfY29udGFpbmVkOiB0cnVlDQotLS0NCg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiNoZWFkZXIgLmJ0bi1ncm91cCB7DQogICAgZGlzcGxheTogbm9uZTsNCn0NCiNoZWFkZXIgLnRpdGxlew0KICAgIGRpc3BsYXk6IG5vbmU7DQp9DQoNCi5tb2RlYmFyew0KICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Ow0KfQ0KDQouYnJfc21hbGx7DQogICAgICAgIGxpbmUtaGVpZ2h0OiA3NSU7DQogICAgIH0NCiAgICAgDQouc2VjdGlvbl90aXRsZXsgDQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjIgIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICJDYWxpYnJpIjsNCiAgZm9udC1zaXplOiAxM3B0Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6ICMwMDk5Y2MgIWltcG9ydGFudDsNCiAgcGFkZGluZzogMHB4IDBweCAwcHggNXB4Ow0KfQ0KDQouc2VjdGlvbl90aXRsZV9sZWZ0ew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJmMmYyICFpbXBvcnRhbnQ7DQogIGZvbnQtZmFtaWx5OiAiQ2FsaWJyaSI7DQogIGZvbnQtc2l6ZTogMTNwdDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGNvbG9yOiAjMDA5OWNjICFpbXBvcnRhbnQ7DQogIHdpZHRoOjQ1JTsNCiAgZmxvYXQ6bGVmdDsNCiAgcGFkZGluZzogMHB4IDBweCAwcHggNXB4Ow0KIH0NCg0KLnNlY3Rpb25fdGl0bGVfcmlnaHR7DQogIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjIgIWltcG9ydGFudDsNCiAgZm9udC1mYW1pbHk6ICJDYWxpYnJpIjsNCiAgZm9udC1zaXplOiAxM3B0Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6ICMwMDk5Y2MgIWltcG9ydGFudDsNCiAgd2lkdGg6NDUlOw0KICBmbG9hdDpyaWdodDsNCiAgcGFkZGluZzogMHB4IDBweCAwcHggNXB4Ow0KIH0NCg0KZGl2eyANCiAgZm9udC1mYW1pbHk6IENhbGlicmk7DQogIGZvbnQtc2l6ZTogMTEuNXB0Ow0KfQ0KDQoudGFibGUxIHsNCiAgZm9udC1mYW1pbHk6ICJDYWxpYnJpIjsNCgljb2xvcjogI2ZmZmZmZjsNCglmb250LXNpemU6IDIwcHQ7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwOTljYzsNCglib3JkZXI6IDA7DQoJaGVpZ2h0OiA1MHB4Ow0KCXRleHQtYWxpZ246IGxlZnQ7DQoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCi50YWJsZTEgdGQJe3BhZGRpbmc6IDBweCAwcHggNXB4IDEwcHg7fQ0KLnRhYmxlMQl0cjpmaXJzdC1jaGlsZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7fQ0KDQoudGFibGUyIHsNCiAgZm9udC1mYW1pbHk6ICJDYWxpYnJpIjsNCgljb2xvcjogI2ZmZmZmZjsNCglmb250LXNpemU6IDEwcHQ7DQoJYmFja2dyb3VuZC1jb2xvcjogIzAwOTljYzsNCglib3JkZXI6IDA7DQoJaGVpZ2h0OiA3NnB4Ow0KCXRleHQtYWxpZ246IGxlZnQ7DQoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCgl3aWR0aDogMTAwJTsNCn0NCi50YWJsZTIgdGQgdHIgew0KICAgIHBhZGRpbmc6IDBweCAwcHggNXB4IDEwcHg7DQogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsNCn0NCg0KLnRhYmxlMyB7DQogIGZvbnQtZmFtaWx5OiAiQ2FsaWJyaSI7DQoJY29sb3I6ICM0MDQwNDA7DQoJZm9udC1zaXplOiAxMXB0Ow0KCWJvcmRlcjogMDsNCgl0ZXh0LWFsaWduOiBsZWZ0Ow0KCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7DQp9DQoNCi5taXJyb3JfaW1nIHsNCiAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlWCgtMSk7DQogIHRyYW5zZm9ybTogc2NhbGVYKC0xKTsNCn0NCg0KdWwgew0KICBsaXN0LXN0eWxlOiBub25lOyANCn0NCg0KLmxpc3RfYmx1ZSB1bCBsaTo6YmVmb3JlIHsNCiAgY29udGVudDogIlwyMDIyIjsgIA0KICBjb2xvcjogIzAwOTljYyAhaW1wb3J0YW50OyANCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtZmFtaWx5OiBDYWxpYnJpOw0KICBmb250LXNpemU6IDExLjVwdDsNCiAgbGVmdDogLTEuMmVtOw0KICBwb3NpdGlvbjphYnNvbHV0ZTsNCn0NCg0KLmxpc3RfYmx1ZSB1bCBsaSB7DQogIG1hcmdpbi1ib3R0b206IDVwdDsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KfQ0KDQo8L3N0eWxlPg0KDQoNCmBgYHtyIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0V9DQojU2V0IGdsb2JhbCBvcHRpb25zDQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobz1GQUxTRSkNCg0KI0xvYWQgbGlicmFyaWVzDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoaHRtbHdpZGdldHMpDQpsaWJyYXJ5KHN0cmluZ3IpDQoNCiNJbWFnZSBsb2NhdGlvbg0KaW1hZ2VfbG9jYXRpb24gPSAnQzovVXNlcnMvSnVyZ2l0YS9Eb2N1bWVudHMvRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy8nDQpgYGANCg0KDQoNCjxkaXY+PHRhYmxlIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5OWNjOyB3aWR0aDoxMDAlOyI+DQo8dHI+PHRkIGhlaWdodD0iNDBweCIgd2lkdGg9IjcwJSI+PC90ZD48dGQgd2lkdGg9IjMwJSI+PC90ZD48L3RyPg0KPHRyPg0KPHRkPg0KICA8dGFibGUgY2xhc3M9InRhYmxlMSI+PHRyPjx0ZD5KdXJnaXRhIEp1c2thaXRlPC90ZD48L3RyPjx0cj48dGQ+Q1VSUklDVUxVTSBWSVRBRTwvdGQ+PC90cj4NCiAgPC90YWJsZT4NCjwvdGQ+DQo8dGQ+DQogIDx0YWJsZSBjbGFzcz0idGFibGUyIj4NCiAgPHRyPjx0ZCB3aWR0aD0iMTAwJSIgeC1tcy1mb3JtYXQtZGV0ZWN0aW9uPSJub25lIj48aW1nIGhlaWdodD0iMTUiIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9waG9uZS5zdmciPiArNDQoMCk3NTEzIDAwNSA2MDk8L3RkPjwvdHI+DQogIDx0cj48dGQgd2lkdGg9IjEwMCUiPjxpbWcgaGVpZ2h0PSIxMCIgc3JjPSJEYXRhIFNjaWVuY2UvUHJvamVjdHMvQ1YvSW1hZ2VzL21haWwuc3ZnIj48c3Bhbj4mbmJzcDtqdXNrYWl0ZS5qdXJnaXRhJiN4NDA7Z21haWwuY29tPC9zcGFuPjwvdGQ+PC90cj4NCiAgPHRyPjx0ZCB3aWR0aD0iMTAwJSI+PGltZyBoZWlnaHQ9IjE1IiBzcmM9IkRhdGEgU2NpZW5jZS9Qcm9qZWN0cy9DVi9JbWFnZXMvaG9tZS5zdmciPiBMb25kb248L3RkPjwvdHI+DQogIDwvdGFibGU+DQo8L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9kaXY+DQoNCg0KIyMgey50YWJzZXQgLnRhYnNldC1mYWRlfQ0KDQojIyMgU3VtbWFyeQ0KDQo8ZGl2IGNsYXNzPSJicl9zbWFsbCI+PGJyPjwvZGl2Pg0KDQo8ZGl2IGNsYXNzPSJzZWN0aW9uX3RpdGxlIj5BIGxpdHRsZSBhYm91dCBtZTwvZGl2Pg0KDQo8ZGl2IHN0eWxlID0gImZvbnQtc2l6ZTogMTJwdDsgbWFyZ2luLXRvcDogMjBweDsgbWFyZ2luLWJvdHRvbTogMjVweDsiPjxzcGFuIHN0eWxlID0gImZvbnQtc2l6ZToxNHB0OyBmb250LXdlaWdodDpib2xkOyBjb2xvcjojMDA5OWNjOyI+4oCcPC9zcGFuPkRhdGEgU2NpZW50aXN0IHdpdGggZWlnaHQgeWVhcnMgb2Ygd29yayBleHBlcmllbmNlIHVzaW5nIGRhdGEgZW5naW5lZXJpbmcsIGFuYWx5dGljcywgbWFjaGluZSBsZWFybmluZyBhbmQgY3JlYXRpdmUgZGF0YSB2aXN1YWxpemF0aW9uIHRvIHNvbHZlIGNoYWxsZW5naW5nIGJ1c2luZXNzIHByb2JsZW1zLiBQYXNzaW9uYXRlIGFib3V0IGFwcGx5aW5nIGFkdmFuY2VkIGRhdGEgc2NpZW5jZSBtZXRob2RzIHRvIGNyZWF0ZSBwZXJzb25hbGlzZWQgdXNlciBleHBlcmllbmNlIGFuZCBoZWxwIHNob3BwZXJzIGRpc2NvdmVyIHByb2R1Y3RzIHRoZXkgbGlrZS48c3BhbiBzdHlsZSA9ICJmb250LXNpemU6MTRwdDsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzAwOTljYzsiPuKAnTwvc3Bhbj48L2Rpdj4NCg0KDQo8ZGl2IGNsYXNzPSJzZWN0aW9uX3RpdGxlIj5NeSBzdG9yeTwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJmb250LXNpemU6IDEwcHQ7IGNvbG9yOiM3ZjdmN2Y7IG1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbTo1cHg7Ij4NCjxpPkhvdmVyIG9uIHRoZSB0aW1lbGluZSB0byBzZWUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHJvbGU8L2k+DQo8L2Rpdj4NCg0KDQoNCmBgYHtyIHRpbWVsaW5lIGRhdGFzZXR9DQojUmVhZCBkYXRhDQp0aW1lbGluZV9kYXRhMSA8LSByZWFkLmNzdihmaWxlPSJDOi9Vc2Vycy9KdXJnaXRhL0RvY3VtZW50cy9EYXRhIFNjaWVuY2UvUHJvamVjdHMvQ1YvRGF0YS90aW1lbGluZV9kYXRhLmNzdiIpDQoNCiNTZXQgdGltZWxpbmVzIHBhcmFtZXRlcnMNCiNmaWxsIGNvbG91cnMNCmNvbG91cl9jdXJyX2pvYiA8LSAnIzAwOTljYycgDQpjb2xvdXJfcHJldl9qb2IgPC0gJyM5MmNkZGQnDQpjb2xvdXJfaW50IDwtICcjZGJlZGY0Jw0KIyBjb2xvdXJfZWR1IDwtICcjYTZhNmE2Jw0KY29sb3VyX2VkdSA8LSAnI2Q3ZDdkNycNCg0KI3RpbWVsaW5lIGhlaWdodA0KaGVpZ2h0IDwtIDINCg0KdGltZWxpbmVfZGF0YTIgPC0gdGltZWxpbmVfZGF0YTEgJT4lIA0KICBtdXRhdGUoDQogICAgc3RhcnRfZGF0ZSA9IGFzLkRhdGUoc3RhcnRfZGF0ZSwgZm9ybWF0ID0gIiVkLyVtLyVZIiksDQogICAgZW5kX2RhdGUgPSBhcy5EYXRlKGVuZF9kYXRlLCBmb3JtYXQgPSAiJWQvJW0vJVkiKSwNCiAgICBmaWxsX2NvbG91ciA9IGNhc2Vfd2hlbigNCiAgICAgIHR5cGUgPT0gJ0N1cnJlbnQgam9iJyB+IGNvbG91cl9jdXJyX2pvYiwNCiAgICAgIHR5cGUgPT0gJ1ByZXZpb3VzIGpvYicgfiBjb2xvdXJfcHJldl9qb2IsDQogICAgICB0eXBlID09ICdJbnRlcm5zaGlwJyB+IGNvbG91cl9pbnQsDQogICAgICB0eXBlID09ICdFZHVjYXRpb24nIH4gY29sb3VyX2VkdQ0KICAgICksDQogICAgZHVyYXRpb25fbW9udGhzID0gaW50ZXJ2YWwoc3RhcnRfZGF0ZSwgZW5kX2RhdGUpICUvJSBtb250aHMoMSkgICsxLA0KICAgIHN0YXJ0X2RhdGVfdGV4dCA9IGFzLmNoYXJhY3Rlcihhcy5EYXRlKHN0YXJ0X2RhdGUsIGZvcm1hdCA9ICIlZC8lbS8lWSIpLCBmb3JtYXQgPSAiJWIgJVkiKSwNCiAgICBlbmRfZGF0ZV90ZXh0ID0gaWZlbHNlKGpvYl90aXRsZSA9PSAnU2VuaW9yIERhdGEgU2NpZW50aXN0JywgJ3ByZXNlbnQnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKGFzLkRhdGUoZW5kX2RhdGUsIGZvcm1hdCA9ICIlZC8lbS8lWSIpLCBmb3JtYXQgPSAiJWIgJVkiKSksDQogICAgZHVyYXRpb25feWVhcnMgPSBkdXJhdGlvbl9tb250aHMgJS8lIDEyLA0KICAgIGR1cmF0aW9uX3JlbWFpbmRlcl9tb250aHMgPSBkdXJhdGlvbl9tb250aHMgJSUgMTIsDQogICAgZHVyYXRpb25fdGV4dCA9IHRyaW13cyhwYXN0ZShpZmVsc2UoZHVyYXRpb25feWVhcnMgPiAwLCBkdXJhdGlvbl95ZWFycywgJycpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGR1cmF0aW9uX3llYXJzID49IDIsICd5ZWFycycsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkdXJhdGlvbl95ZWFycyA9PSAxLCAneWVhcicsICcnKSksDQogICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZHVyYXRpb25fcmVtYWluZGVyX21vbnRocyA+IDAsIGR1cmF0aW9uX3JlbWFpbmRlcl9tb250aHMsICcnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShkdXJhdGlvbl9yZW1haW5kZXJfbW9udGhzID49IDIsICdtb250aHMnLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZHVyYXRpb25fcmVtYWluZGVyX21vbnRocyA9PSAxLCAnbW9udGgnLCAnJykpDQogICAgICAgICAgICAgICAgICAgICAgICAgICApKSwNCiAgICAjTGFiZWxzIGZvciBhbm5vdGFpb25zDQogICAgbGFiZWwgPSBwYXN0ZSgnPGI+Jyxjb21wYW55LCc8L2I+XG4nLGpvYl90aXRsZSksICAgIA0KICAgICNIb292ZXIgdGV4dA0KICAgIGhvb3Zlcl90ZXh0ID0gcGFzdGUoJ0Zyb20gJywgc3RhcnRfZGF0ZV90ZXh0LCAnIHRvICcsIGVuZF9kYXRlX3RleHQsICc8YnI+JywNCiAgICAgICAgICAgICAgICAgICAgICAgICdEdXJhdGlvbjogJywgZHVyYXRpb25fdGV4dCwgJzxicj4nLA0KICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIHN0eWxlID0gImNvbG9yOiMwMDk5Y2M7Ij48Yj4nLCBhY2hpZXZlbWVudCwgJzwvYj48L3NwYW4+Jywgc2VwPScnDQogICAgICAgICAgICAgICAgICAgICAgICApDQogICkNCmBgYA0KDQoNCmBgYHtyIHRpbWVsaW5lIGNvb3JkaW5hdGVzfQ0KI0NhbGN1bGF0ZSB4IGFuZCB5IGNvb3JkDQp0aW1lbGluZV9kYXRhIDwtIHRpbWVsaW5lX2RhdGEyICU+JSANCiAgbXV0YXRlKA0KICAgIHgxID0gaW50ZXJ2YWwoeW1kKCcyMDA5LTAzLTAxJyksIHN0YXJ0X2RhdGUpICUvJSBtb250aHMoMSksDQogICAgeDIgPSB4MSArIGhlaWdodC90YW4oMTEwL3NxcnQoZHVyYXRpb25fbW9udGhzKSpwaS8xODApLA0KICAgIHgzID0gaW50ZXJ2YWwoeW1kKCcyMDA5LTAzLTAxJyksIGVuZF9kYXRlKSAlLyUgbW9udGhzKDEpICsgMSAtIGhlaWdodC90YW4oMTEwL3NxcnQoZHVyYXRpb25fbW9udGhzKSpwaS8xODApLA0KICAgIHg0ID0gaW50ZXJ2YWwoeW1kKCcyMDA5LTAzLTAxJyksIGVuZF9kYXRlKSAlLyUgbW9udGhzKDEpICsgMSwNCiAgICB5MSA9IDAsDQogICAgeTIgPSBoZWlnaHQsDQogICAgeTMgPSBoZWlnaHQsDQogICAgeTQgPSAwLA0KICAgIHhfbWlkID0geDEgKyAoeDQteDEpLzIsDQogICAgI0xpbmUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbnMNCiAgICBsaW5lX3N0YXJ0X3kgPSB5MiAtIGhlaWdodC95MiAqIDAuMw0KKQ0KDQojTGluZSBlbmQgY29vcmRpbmF0ZSAobWFudWFsbHkgYWRqdXN0ZWQgdG8gbWFrZSBzdXJlIHRoZSBsYWJlbHMgZG9uJ3Qgb3ZlcmxhcCkNCnRpbWVsaW5lX2RhdGEkbGluZV9lbmRfeSA8LSBjKGhlaWdodCsxLjIsIGhlaWdodCsyLjgsIGhlaWdodCs0LCBoZWlnaHQrMSwgaGVpZ2h0KzIuNSwgaGVpZ2h0KzQsIGhlaWdodCsxLCBoZWlnaHQrMi41KQ0KDQpgYGANCg0KDQpgYGB7ciB0aW1lbGluZSBwbG90fQ0KI0NyZWF0ZSBwbG90DQp0aW1lbGluZV9wbG90IDwtIHBsb3RfbHkod2lkdGggPSA5MDcsIGhlaWdodCA9IDI1MCkgJT4lIA0KICBsYXlvdXQoc2hvd2xlZ2VuZCA9IEZBTFNFLA0KICAgICAgICAgZHJhZ21vZGUgPSBGQUxTRSwNCiAgICAgICAgIGhvdmVybGFiZWwgPSBsaXN0KGZvbnQ9bGlzdChmYW1pbHkgPSAiQ2FsaWJyaSIsIHNpemU9MTIpLCBiZ2NvbG9yID0gJ3doaXRlJyksDQogICAgICAgICB5YXhpcyA9IGxpc3QoDQogICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIiIsDQogICAgICAgICAgICAgICAgICAgIHplcm9saW5lID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHNob3dsaW5lID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHNob3dncmlkID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHJhbmdlID0gYygwLCA2LjUpDQogICAgICAgICApLA0KICAgICAgICAgeGF4aXMgPSBsaXN0KA0KICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICIiLA0KICAgICAgICAgICAgICAgICAgICB6ZXJvbGluZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICBzaG93bGluZSA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHNob3dncmlkID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIGxpbmVjb2xvciA9ICcjNTk1OTU5JywNCiAgICAgICAgICAgICAgICAgICAgbGluZXdpZHRoID0gMTcsDQogICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gMCwNCiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjKC0xMiwxNDApDQogICAgICAgICAgICAgICAgICAgICksDQogICAgICAgICBtYXJnaW4gPSBsaXN0KGwgPSAwLCByID0gMCwgYiA9IDM1LCB0ID0gMzAsIHBhZCA9IDAsIGF1dG9leHBhbmQgPSBGQUxTRSkNCikgJT4lIA0KI0FkZCB5ZWFyIGFubm90YXRpb25zIG9uIHggYXhpcyAgDQphZGRfYW5ub3RhdGlvbnMoDQogIHggPSBzZXEoZnJvbSA9IC0yLCBieSA9IDEyLCBsZW5ndGgub3V0ID0gMTIpLA0KICB5ID0gc2VxKGZyb20gPSAwLCBieSA9IDAsIGxlbmd0aC5vdXQgPSAxMiksDQogIHRleHQgPSBzcHJpbnRmKCI8Yj4lczwvYj4iLCBjKCIyMDA5IiwiMjAxMCIsIjIwMTEiLCIyMDEyIiwiMjAxMyIsIjIwMTQiLCIyMDE1IiwNCiAgICAgICAgICAgIjIwMTYiLCIyMDE3IiwiMjAxOCIsIjIwMTkiLCIyMDIwIikpLA0KICBuYW1lID0gJ3llYXInLA0KICB4cmVmID0gIngiLA0KICB5cmVmID0gInkiLA0KICBzaG93YXJyb3cgPSBGQUxTRSwNCiAgYXggPSAwLA0KICBheSA9IDAsDQogIGZvbnQgPSBsaXN0KA0KICAgIGZhbWlseSA9ICJDYWxpYnJpIiwNCiAgICBzaXplID0gMTIsDQogICAgY29sb3IgPSAid2hpdGUiDQogICAgKSwNCiAgeGFuY2hvciA9ICdjZW50ZXInLA0KICB5YW5jaG9yID0gJ2NlbnRlcicNCiAgKSAlPiUgDQojQWRkIGpvYiBhbm5vdGF0aW9ucyAgDQphZGRfYW5ub3RhdGlvbnMoDQogIHggPSB0aW1lbGluZV9kYXRhWywgInhfbWlkIl0sDQogIHkgPSBjKGhlaWdodCsxLjIsIGhlaWdodCsyLjgsIGhlaWdodCs0LCBoZWlnaHQrMSwgaGVpZ2h0KzIuNSwgaGVpZ2h0KzQsIGhlaWdodCsxLCBoZWlnaHQrMi41KSwNCiAgbmFtZSA9ICdqb2IgYW5ub3RhdGlvbicsDQogIHRleHQgPSB0aW1lbGluZV9kYXRhWywgImxhYmVsIl0sDQogIHhyZWYgPSAieCIsDQogIHlyZWYgPSAieSIsDQogIHNob3dhcnJvdyA9IEZBTFNFLA0KICBheCA9IDAsDQogIGF5ID0gMCwNCiAgYWxpZ24gPSAncmlnaHQnLA0KICB4YW5jaG9yID0gJ3JpZ2h0JywNCiAgZm9udCA9IGxpc3QoDQogICAgZmFtaWx5ID0gIkNhbGlicmkiLA0KICAgIHNpemUgPSAxMywNCiAgICBjb2xvciA9ICJibGFjayINCiAgICApDQogICkgDQoNCiNBZGQgdHJhY2UgZm9yIGVhY2ggcmVjb3JkDQpmb3IgKGkgaW4gMTpucm93KHRpbWVsaW5lX2RhdGEpKXsNCnRpbWVsaW5lX3Bsb3QgPC0gdGltZWxpbmVfcGxvdCAlPiUgDQogIGFkZF90cmFjZSgNCiAgICB4ID0gYyh0aW1lbGluZV9kYXRhW2ksICJ4MSJdLCB0aW1lbGluZV9kYXRhW2ksICJ4MiJdLCB0aW1lbGluZV9kYXRhW2ksICJ4MyJdLCB0aW1lbGluZV9kYXRhW2ksICJ4NCJdKSwNCiAgICB5ID0gYyh0aW1lbGluZV9kYXRhW2ksICJ5MSJdLCB0aW1lbGluZV9kYXRhW2ksICJ5MiJdLCB0aW1lbGluZV9kYXRhW2ksICJ5MyJdLCB0aW1lbGluZV9kYXRhW2ksICJ5NCJdKSwNCiAgICB0eXBlID0gJ3NjYXR0ZXInLA0KICAgIG1vZGU9J2xpbmVzJywNCiAgICBuYW1lID0gJ3BvbHlnb24nLA0KICAgIGxpbmUgPSBsaXN0KHdpZHRoPTApLA0KICAgIGZpbGwgPSAndG9zZWxmJywNCiAgICBmaWxsY29sb3IgPSB0aW1lbGluZV9kYXRhW2ksICJmaWxsX2NvbG91ciJdLA0KICAgIGhvdmVyb24gPSAnZmlsbHMnLA0KICAgIHRleHQgPSB0aW1lbGluZV9kYXRhW2ksICJob292ZXJfdGV4dCJdLA0KICAgIGhvdmVyaW5mbyA9ICd0ZXh0Jw0KICApDQp9DQoNCiNBZGQgbWFya2VycyBhdCB0aGUgdG9wIG9mIGVhY2ggdHJhcGV6ZQ0KZm9yIChpIGluIDE6bnJvdyh0aW1lbGluZV9kYXRhKSl7DQp0aW1lbGluZV9wbG90IDwtIHRpbWVsaW5lX3Bsb3QgJT4lIA0KICBhZGRfdHJhY2UoDQogICAgeCA9IHRpbWVsaW5lX2RhdGFbaSwgInhfbWlkIl0sDQogICAgeSA9IGhlaWdodC0wLjMsDQogICAgdHlwZSA9ICdzY2F0dGVyJywNCiAgICBtb2RlID0gJ21hcmtlcnMnLA0KICAgIG5hbWUgPSAnYW5ub3RhdGlvbiBsaW5lIHBvaW50JywNCiAgICBtYXJrZXIgPSBsaXN0KA0KICAgICAgY29sb3IgPSAnI2JlYmViZScsDQogICAgICBzaXplID0gNywNCiAgICAgIGxpbmUgPSBsaXN0KHdpZHRoID0gMCkNCiAgICApLA0KICAgIGhvdmVyaW5mbyA9ICdza2lwJw0KICApDQp9DQoNCiNBZGQgbGluZXMgYmV0d2VlbiB0cmFwZXplcyBhbmQgYW5ub3RhdGlvbnMNCmZvciAoaSBpbiAxOm5yb3codGltZWxpbmVfZGF0YSkpew0KICB0aW1lbGluZV9wbG90IDwtIHRpbWVsaW5lX3Bsb3QgJT4lIA0KICBhZGRfdHJhY2UoDQogICAgeCA9IHJlcCh0aW1lbGluZV9kYXRhW2ksICJ4X21pZCJdLCB0aW1lcyA9IDIpLA0KICAgIHkgPSBjKHRpbWVsaW5lX2RhdGFbaSwgImxpbmVfc3RhcnRfeSJdLCB0aW1lbGluZV9kYXRhW2ksImxpbmVfZW5kX3kiXSksDQogICAgdHlwZSA9ICdzY2F0dGVyJywNCiAgICBtb2RlPSdsaW5lcycsDQogICAgbmFtZSA9ICdhbm5vdGF0aW9uIGxpbmUnLA0KICAgIGxpbmUgPSBsaXN0KHdpZHRoPTEsIGNvbG9yID0gJyNiZWJlYmUnKSwNCiAgICBob3ZlcmluZm8gPSAnc2tpcCcNCiAgKQ0KfQ0KDQpgYGANCg0KDQpgYGB7cn0NCnRpbWVsaW5lX3Bsb3QNCmBgYA0KDQoNCjxkaXY+DQo8ZGl2IGNsYXNzPSJzZWN0aW9uX3RpdGxlX2xlZnQiPkRhdGEgc2NpZW5jZSB0ZWNobmlxdWVzPC9kaXY+DQo8ZGl2IGNsYXNzPSJzZWN0aW9uX3RpdGxlX3JpZ2h0Ij5EYXRhIHNjaWVuY2UgdG9vbHM8L2Rpdj4NCjwvZGl2Pg0KDQo8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0OyB3aWR0aDo0NSU7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgZm9udC1zaXplOjEwcHQ7IGNvbG9yOiM3ZjdmN2Y7IG1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbTo1cHg7Ij4NCjxpPkNsaWNrIG9uIHRoZSBiYXJzIHRvIHNlZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGVhY2ggdGVjaG5pcXVlPC9pPg0KPC9kaXY+DQo8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDsgd2lkdGg6NDUlOyBmb250LXdlaWdodDpub3JtYWw7IGZvbnQtc2l6ZToxMHB0OyBjb2xvcjojN2Y3ZjdmOyBtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206NXB4OyI+DQo8aT5DbGljayBvbiB0aGUgYmFycyB0byBzZWUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIHRvb2w8L2k+DQo8L2Rpdj4NCjxkaXYgc3R5bGUgPSAiY2xlYXI6Ym90aCI+IA0KDQpgYGB7ciBkcyB0ZWNobmlxdWVzIHBsb3R9DQpkc190ZWNobmlxdWVzX2RhdGEgPC0gcmVhZC5jc3YoZmlsZT0iQzovVXNlcnMvSnVyZ2l0YS9Eb2N1bWVudHMvRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0RhdGEvZHNfdGVjaG5pcXVlc19kYXRhX3YyLmNzdiIpICU+JSANCiAgICBtdXRhdGUoDQogICAgYmFyX2NvbG91ciA9ICcjQzJFM0VDJw0KICApDQoNCmRzX3RlY2hfcGxvdCA8LSBwbG90X2x5KHggPSBkc190ZWNobmlxdWVzX2RhdGEkbGV2ZWwsIA0KICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGRzX3RlY2huaXF1ZXNfZGF0YSR0ZWNobmlxdWUsIA0KICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICdiYXInLCANCiAgICAgICAgICAgICAgICAgICAgICAgIG9yaWVudGF0aW9uID0gJ2gnLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChjb2xvciA9IGRzX3RlY2huaXF1ZXNfZGF0YSRiYXJfY29sb3VyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyaW5mbyA9ICdub25lJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVydGV4dCA9IGRzX3RlY2huaXF1ZXNfZGF0YSRkZXNjcmlwdGlvbiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVybGFiZWwgPSBsaXN0KA0KICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PWxpc3QoZmFtaWx5ID0gIkNhbGlicmkiLCBzaXplPTEyKSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIGJnY29sb3IgPSAnd2hpdGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiA9ICJsZWZ0IiksDQogICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IDM5MCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IDMzMA0KICAgICAgICAgICAgICAgICAgICAgICAgKSAlPiUgDQogICAgbGF5b3V0KA0KICAgICAgICAgc2hvd2xlZ2VuZCA9IEZBTFNFLA0KICAgICAgICAgZHJhZ21vZGUgPSBGQUxTRSwNCiAgICAgICAgIHlheGlzID0gbGlzdCgNCiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSAiIiwNCiAgICAgICAgICAgICAgICAgICAgemVyb2xpbmUgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgc2hvd2xpbmUgPSBUUlVFLA0KICAgICAgICAgICAgICAgICAgICBzaG93dGlja2xhYmVscyA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICBzaG93Z3JpZCA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICBsaW5lY29sb3IgPSAnI2Q5ZDlkOScsDQogICAgICAgICAgICAgICAgICAgIGxpbmV3aWR0aCA9IDEsDQogICAgICAgICAgICAgICAgICAgIGF0ZWdvcnlvcmRlciA9ICJhcnJheSIsDQogICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5YXJyYXkgPSByZXYoZHNfdGVjaG5pcXVlc19kYXRhJHRlY2huaXF1ZSkNCiAgICAgICAgICksDQogICAgICAgICB4YXhpcyA9IGxpc3QoDQogICAgICAgICAgICAgICAgICAgIHRpdGxlID0gIiIsDQogICAgICAgICAgICAgICAgICAgIHplcm9saW5lID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHNob3dsaW5lID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgc2hvd3RpY2tsYWJlbHMgPSBUUlVFLA0KICAgICAgICAgICAgICAgICAgICBzaG93Z3JpZCA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICB0aWNrcyA9ICJvdXRzaWRlIiwNCiAgICAgICAgICAgICAgICAgICAgdGlja3ZhbHMgPSBjKDEsMiwzLDQsNSksIA0KICAgICAgICAgICAgICAgICAgICB0aWNrdGV4dCA9IGMoIkknbSBsZWFybmluZyIsIk5ld2JpZSIsIlByZXR0eSBnb29kIiwiVmVyeSBnb29kIiwiRXhwZXJ0IiksDQogICAgICAgICAgICAgICAgICAgIHRpY2tjb2xvciA9ICcjZDlkOWQ5JywNCiAgICAgICAgICAgICAgICAgICAgdGlja2ZvbnQgPSBsaXN0KA0KICAgICAgICAgICAgICAgICAgICAgIGZhbWlseSA9ICJDYWxpYnJpIiwNCiAgICAgICAgICAgICAgICAgICAgICBzaXplID0gMTMsDQogICAgICAgICAgICAgICAgICAgICAgI2NvbG9yID0gIiM1OTU5NTkiDQogICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAiIzdmN2Y3ZiINCiAgICAgICAgICAgICAgICAgICAgICApLA0KICAgICAgICAgICAgICAgICAgICBsaW5lY29sb3IgPSAnI2Q5ZDlkOScsDQogICAgICAgICAgICAgICAgICAgIGxpbmV3aWR0aCA9IDEsDQogICAgICAgICAgICAgICAgICAgIHNpZGUgPSAidG9wIiwNCiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgPSBjKDAsNSkNCiAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgIG1hcmdpbiA9IGxpc3QobCA9IDAsIHIgPSAyMCwgYiA9IDI1LCB0ID0gMzAsIHBhZCA9IDAsIGF1dG9leHBhbmQgPSBGQUxTRSkNCiAgICApICU+JSANCiAgYWRkX2Fubm90YXRpb25zKA0KICAgICAgeCA9IHJlcCgwLCB0aW1lcyA9IG5yb3coZHNfdGVjaG5pcXVlc19kYXRhKSksDQogICAgICB5ID0gZHNfdGVjaG5pcXVlc19kYXRhJHRlY2huaXF1ZSwNCiAgICAgIHRleHQgPSBkc190ZWNobmlxdWVzX2RhdGEkdGVjaG5pcXVlLA0KICAgICAgeHJlZiA9ICJ4IiwNCiAgICAgIHlyZWYgPSAieSIsDQogICAgICBzaG93YXJyb3cgPSBGQUxTRSwNCiAgICAgIGFsaWduID0gJ2xlZnQnLA0KICAgICAgeGFuY2hvciA9ICdsZWZ0JywNCiAgICAgIGZvbnQgPSBsaXN0KA0KICAgICAgICBmYW1pbHkgPSAiQ2FsaWJyaSIsDQogICAgICAgIHNpemUgPSAxNCwNCiAgICAgICAgY29sb3IgPSAiIzQwNDA0MCINCiAgICAgICAgKQ0KICApDQoNCg0KI2RzX3RlY2hfcGxvdA0KYGBgDQoNCg0KYGBge3IgZHMgdGVjaG5pcXVlcyBwbG90IGpzfQ0KZHNfdGVjaF9wbG90IDwtIGRzX3RlY2hfcGxvdCAlPiUgDQogIG9uUmVuZGVyKCINCiAgZnVuY3Rpb24oZWwpIHsgDQogICAgICAgIGVsLm9uKCdwbG90bHlfaG92ZXInLCBmdW5jdGlvbihkYXRhKSB7IA0KICAgICAgICB2YXIgYmFyX2NvbG9yX2hvdmVyID0gJyMwMDk5Y2MnOw0KICAgICAgICB2YXIgdGV4dF9jb2xvcl9ob3ZlciA9ICcjRkZGRkZGJzsNCiAgICAgICAgDQogICAgICAgIC8vR2V0IG51bWJlciBvZiBzZWxlY3RlZCBwb2ludA0KICAgICAgICBwb2ludE51bSA9IGRhdGEucG9pbnRzWzBdLnBvaW50TnVtYmVyOw0KICAgICAgICAvL0dldCBjb2xvcnMgYXJyYXkgYW5kIHVwZGF0ZSB0aGUgY29sb3IgZm9yIHRoZSBzZWxlY3RlZCBwb2ludA0KICAgICAgICBjb2xvcnMgPSBkYXRhLnBvaW50c1swXS5kYXRhLm1hcmtlci5jb2xvcjsNCiAgICAgICAgY29sb3JzW3BvaW50TnVtXSA9IGJhcl9jb2xvcl9ob3ZlcjsNCg0KICAgICAgICAvL0dldCBhbm5vdGF0aW9ucyBhbmQgY2hhbmdlIHRleHQgY29sb3IgdG8gd2hpdGUgb2YgdGhlIGhvdmVyZWQgcG9pbnQNCiAgICAgICAgYW5ub3RhdGlvbnMgPSBlbC5sYXlvdXQuYW5ub3RhdGlvbnM7DQogICAgICAgIGFubm90YXRpb25zW3BvaW50TnVtXS5mb250LmNvbG9yID0gdGV4dF9jb2xvcl9ob3ZlcjsNCiAgICAgICAgDQogICAgICAgIC8vUmVzdHlsZSBtYXJrZXIgY29sb3VycyBhbmQgYW5ub3RhdGlvbnMNCiAgICAgICAgUGxvdGx5LnJlc3R5bGUoZWwuaWQsIHsnbWFya2VyJzp7Y29sb3I6IGNvbG9yc319LCBbMF0pOw0KICAgICAgICBQbG90bHkucmVsYXlvdXQoZWwuaWQsIHsnYW5ub3RhdGlvbnMnOiBhbm5vdGF0aW9uc30pOw0KICAgIH0pOw0KICAgIA0KICAgIGVsLm9uKCdwbG90bHlfdW5ob3ZlcicsIGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgdmFyIGJhcl9jb2xvcl91bmhvdmVyID0gJyNDMkUzRUMnOw0KICAgICAgICB2YXIgdGV4dF9jb2xvcl91bmhvdmVyID0gJyM0MDQwNDAnOw0KICAgICAgICANCiAgICAgICAgLy9HZXQgbnVtYmVyIG9mIHVuaGl2ZXJlZCBwb2ludA0KICAgICAgICBwb2ludE51bSA9IGRhdGEucG9pbnRzWzBdLnBvaW50TnVtYmVyOw0KDQogICAgICAgIC8vR2V0IGNvbG91cnMgYXJyYXkgYW5kIHVwZGF0ZSBjb2xvdXIgb2YgdW5ob3ZlcmVkIHBvaW50DQogICAgICAgIGNvbG9ycyA9IGRhdGEucG9pbnRzWzBdLmRhdGEubWFya2VyLmNvbG9yOw0KICAgICAgICBjb2xvcnNbcG9pbnROdW1dID0gYmFyX2NvbG9yX3VuaG92ZXI7DQogICAgICAgIA0KICAgICAgICAvL0dldCBhbm5vdGF0aW9ucyBhbmQgY2hhbmdlIHRleHQgY29sb3Igb2YgdGhlIHVuaG92ZXJlZCBwb2ludA0KICAgICAgICBhbm5vdGF0aW9ucyA9IGVsLmxheW91dC5hbm5vdGF0aW9uczsNCiAgICAgICAgYW5ub3RhdGlvbnNbcG9pbnROdW1dLmZvbnQuY29sb3IgPSB0ZXh0X2NvbG9yX3VuaG92ZXI7DQogICAgICAgIA0KICAgICAgICAvL1Jlc3R5bGUgbWFya2VyIGNvbG91cnMgYW5kIGFubm90YXRpb25zDQogICAgICAgIFBsb3RseS5yZXN0eWxlKGVsLmlkLCB7J21hcmtlcic6e2NvbG9yOiBjb2xvcnN9fSwgWzBdKTsNCiAgICAgICAgUGxvdGx5LnJlbGF5b3V0KGVsLmlkLCB7J2Fubm90YXRpb25zJzogYW5ub3RhdGlvbnN9KTsNCiAgICB9KTsNCiAgICANCiAgICAgZWwub24oJ3Bsb3RseV9jbGljaycsIGZ1bmN0aW9uKGRhdGEpIHsgDQogICAgIHZhciBwb2ludCA9IGRhdGEucG9pbnRzWzBdLA0KICAgICAgICBhbm5vdGF0ZV90ZXh0ID0gcG9pbnQuaG92ZXJ0ZXh0LA0KICAgICAgICBuZXdfYW5ub3RhdGlvbiA9IHsNCiAgICAgICAgICB0ZXh0OiBhbm5vdGF0ZV90ZXh0LA0KICAgICAgICAgIHg6IDUsDQogICAgICAgICAgeTogcG9pbnQueSwNCiAgICAgICAgICBzaG93YXJyb3c6IGZhbHNlLA0KICAgICAgICAgIGJnY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDEpJywNCiAgICAgICAgICBmb250OiB7ZmFtaWx5OidDYWxpYnJpJywgc2l6ZToxMn0sDQogICAgICAgICAgYm9yZGVyY29sb3I6ICc0MDQwNDAnLA0KICAgICAgICAgIGJvcmRlcndpZHRoOiAxLA0KICAgICAgICAgIGJvcmRlcnBhZDogMywNCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLA0KICAgICAgICAgIHhhbmNob3I6ICdyaWdodCcNCiAgICAgICAgfSwNCiAgICAgICAgbmV3SW5kZXggPSAoZWwubGF5b3V0LmFubm90YXRpb25zIHx8IFtdKS5sZW5ndGg7DQogICAgICAgIC8vIGFsZXJ0KGFubm90YXRlX3RleHQpOw0KICAgICAgICANCiAgICAgICAgaWYobmV3SW5kZXgpIHsNCiAgICAgICAgdmFyIGZvdW5kQ29weSA9IGZhbHNlOw0KICAgICAgICBlbC5sYXlvdXQuYW5ub3RhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhbm4sIHNhbWVJbmRleCkgew0KICAgICAgICAgaWYoYW5uLnRleHQgPT09IG5ld19hbm5vdGF0aW9uLnRleHQgKSB7DQogICAgICAgICAgIFBsb3RseS5yZWxheW91dChlbC5pZCwgJ2Fubm90YXRpb25zWycgKyBzYW1lSW5kZXggKyAnXScsICdyZW1vdmUnKTsNCiAgICAgICAgICAgZm91bmRDb3B5ID0gdHJ1ZTsNCiAgICAgICAgIH0NCiAgICAgICB9KTsNCiAgICAgICBpZihmb3VuZENvcHkpIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgIFBsb3RseS5yZWxheW91dChlbC5pZCwgJ2Fubm90YXRpb25zWycgKyBuZXdJbmRleCArICddJywgbmV3X2Fubm90YXRpb24pDQogIH0pOw0KICANCiAgIGVsLm9uKCdwbG90bHlfdW5ob3ZlcicsIGZ1bmN0aW9uKGRhdGEpIHsgDQogICAgIHZhciBudW1Bbm5vdGF0aW9ucyA9IChlbC5sYXlvdXQuYW5ub3RhdGlvbnMgfHwgW10pLmxlbmd0aCwNCiAgICAgICAgIG51bUJhcnMgPSBkYXRhLnBvaW50c1swXS5kYXRhLngubGVuZ3RoOw0KICAgICAgICAgaWYobnVtQW5ub3RhdGlvbnMgPiBudW1CYXJzKSB7DQogICAgICAgICBsYXN0SW5kZXggPSBudW1Bbm5vdGF0aW9ucyAtIDE7DQogICAgICAgICBQbG90bHkucmVsYXlvdXQoZWwuaWQsICdhbm5vdGF0aW9uc1snICsgbGFzdEluZGV4ICsgJ10nLCAncmVtb3ZlJyk7DQogICAgICAgIH0NCiAgfSk7DQogICAgfQ0KICAiKQ0KYGBgDQoNCg0KDQoNCmBgYHtyIGRzIHRvb2xzIHBsb3R9DQpkc190b29sc19kYXRhIDwtIHJlYWQuY3N2KGZpbGU9IkM6L1VzZXJzL0p1cmdpdGEvRG9jdW1lbnRzL0RhdGEgU2NpZW5jZS9Qcm9qZWN0cy9DVi9EYXRhL2RzX3Rvb2xzX2RhdGFfdjIuY3N2IikgJT4lIA0KICAgICAgbXV0YXRlKA0KICAgIGJhcl9jb2xvdXIgPSAnI0MyRTNFQycNCiAgKQ0KDQpkc190b29sc19wbG90IDwtIHBsb3RfbHkoeCA9IGRzX3Rvb2xzX2RhdGEkbGV2ZWwsIA0KICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGRzX3Rvb2xzX2RhdGEkdG9vbCwgDQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gJ2JhcicsIA0KICAgICAgICAgICAgICAgICAgICAgICAgb3JpZW50YXRpb24gPSAnaCcsDQogICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KGNvbG9yID0gZHNfdG9vbHNfZGF0YSRiYXJfY29sb3VyKSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyaW5mbyA9ICdub25lJywNCiAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVydGV4dCA9IGRzX3Rvb2xzX2RhdGEkZGVzY3JpcHRpb24sDQogICAgICAgICAgICAgICAgICAgICAgICBob3ZlcmxhYmVsID0gbGlzdCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1saXN0KGZhbWlseSA9ICJDYWxpYnJpIiwgc2l6ZT0xMiksIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBiZ2NvbG9yID0gJ3doaXRlJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSAibGVmdCIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAzOTAsIA0KICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gMzMwDQogICAgICAgICAgICAgICAgICAgICAgICApICU+JSANCiAgICBsYXlvdXQoDQogICAgICAgICBzaG93bGVnZW5kID0gRkFMU0UsDQogICAgICAgICBkcmFnbW9kZSA9IEZBTFNFLA0KICAgICAgICAgeWF4aXMgPSBsaXN0KA0KICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICIiLA0KICAgICAgICAgICAgICAgICAgICB6ZXJvbGluZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICBzaG93bGluZSA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIHNob3dncmlkID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgIGxpbmVjb2xvciA9ICcjZDlkOWQ5JywNCiAgICAgICAgICAgICAgICAgICAgbGluZXdpZHRoID0gMSwNCiAgICAgICAgICAgICAgICAgICAgYXRlZ29yeW9yZGVyID0gImFycmF5IiwNCiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlhcnJheSA9IHJldihkc190b29sc19kYXRhJHRvb2wpDQogICAgICAgICApLA0KICAgICAgICAgeGF4aXMgPSBsaXN0KA0KICAgICAgICAgICAgICAgICAgICB0aXRsZSA9ICIiLA0KICAgICAgICAgICAgICAgICAgICB6ZXJvbGluZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICBzaG93bGluZSA9IFRSVUUsDQogICAgICAgICAgICAgICAgICAgIHNob3d0aWNrbGFiZWxzID0gVFJVRSwNCiAgICAgICAgICAgICAgICAgICAgc2hvd2dyaWQgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgICAgdGlja3MgPSAib3V0c2lkZSIsDQogICAgICAgICAgICAgICAgICAgIHRpY2t2YWxzID0gYygxLDIsMyw0LDUpLCANCiAgICAgICAgICAgICAgICAgICAgdGlja3RleHQgPSBjKCJJJ20gbGVhcm5pbmciLCJOZXdiaWUiLCJQcmV0dHkgZ29vZCIsIlZlcnkgZ29vZCIsIkV4cGVydCIpLA0KICAgICAgICAgICAgICAgICAgICB0aWNrY29sb3IgPSAnI2Q5ZDlkOScsDQogICAgICAgICAgICAgICAgICAgIHRpY2tmb250ID0gbGlzdCgNCiAgICAgICAgICAgICAgICAgICAgICBmYW1pbHkgPSAiQ2FsaWJyaSIsDQogICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEzLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gIiM3ZjdmN2YiDQogICAgICAgICAgICAgICAgICAgICAgKSwNCiAgICAgICAgICAgICAgICAgICAgbGluZWNvbG9yID0gJyNkOWQ5ZDknLA0KICAgICAgICAgICAgICAgICAgICBsaW5ld2lkdGggPSAxLA0KICAgICAgICAgICAgICAgICAgICBzaWRlID0gInRvcCIsDQogICAgICAgICAgICAgICAgICAgIHJhbmdlID0gYygwLDUpDQogICAgICAgICAgICAgICAgICAgICksDQogICAgICAgICBtYXJnaW4gPSBsaXN0KGwgPSAwLCByID0gMjAsIGIgPSAyNSwgdCA9IDMwLCBwYWQgPSAwLCBhdXRvZXhwYW5kID0gRkFMU0UpDQogICAgKSAlPiUgDQogIGFkZF9hbm5vdGF0aW9ucygNCiAgICAgIHggPSByZXAoMCwgdGltZXM9bnJvdyhkc190b29sc19kYXRhKSksDQogICAgICB5ID0gZHNfdG9vbHNfZGF0YSR0b29sLA0KICAgICAgdGV4dCA9IGRzX3Rvb2xzX2RhdGEkdG9vbCwNCiAgICAgIHhyZWYgPSAieCIsDQogICAgICB5cmVmID0gInkiLA0KICAgICAgc2hvd2Fycm93ID0gRkFMU0UsDQogICAgICBhbGlnbiA9ICdsZWZ0JywNCiAgICAgIHhhbmNob3IgPSAnbGVmdCcsDQogICAgICBmb250ID0gbGlzdCgNCiAgICAgICAgZmFtaWx5ID0gIkNhbGlicmkiLA0KICAgICAgICBzaXplID0gMTQsDQogICAgICAgICNjb2xvciA9ICIjNTk1OTU5Ig0KICAgICAgICBjb2xvciA9ICIjNDA0MDQwIg0KICAgICAgICApDQogICkNCg0KDQojZHNfdG9vbHNfcGxvdA0KYGBgDQoNCg0KYGBge3IgZHMgdG9vbHMgcGxvdCBqc30NCmRzX3Rvb2xzX3Bsb3QgPC0gZHNfdG9vbHNfcGxvdCAlPiUgDQogIG9uUmVuZGVyKCINCiAgZnVuY3Rpb24oZWwpIHsgDQogICAgICAgIGVsLm9uKCdwbG90bHlfaG92ZXInLCBmdW5jdGlvbihkYXRhKSB7IA0KICAgICAgICB2YXIgYmFyX2NvbG9yX2hvdmVyID0gJyMwMDk5Y2MnOw0KICAgICAgICB2YXIgdGV4dF9jb2xvcl9ob3ZlciA9ICcjRkZGRkZGJzsNCiAgICAgICAgDQogICAgICAgIC8vR2V0IG51bWJlciBvZiBzZWxlY3RlZCBwb2ludA0KICAgICAgICBwb2ludE51bSA9IGRhdGEucG9pbnRzWzBdLnBvaW50TnVtYmVyOw0KICAgICAgICAvL0dldCBjb2xvcnMgYXJyYXkgYW5kIHVwZGF0ZSB0aGUgY29sb3IgZm9yIHRoZSBzZWxlY3RlZCBwb2ludA0KICAgICAgICBjb2xvcnMgPSBkYXRhLnBvaW50c1swXS5kYXRhLm1hcmtlci5jb2xvcjsNCiAgICAgICAgY29sb3JzW3BvaW50TnVtXSA9IGJhcl9jb2xvcl9ob3ZlcjsNCg0KICAgICAgICAvL0dldCBhbm5vdGF0aW9ucyBhbmQgY2hhbmdlIHRleHQgY29sb3IgdG8gd2hpdGUgb2YgdGhlIGhvdmVyZWQgcG9pbnQNCiAgICAgICAgYW5ub3RhdGlvbnMgPSBlbC5sYXlvdXQuYW5ub3RhdGlvbnM7DQogICAgICAgIGFubm90YXRpb25zW3BvaW50TnVtXS5mb250LmNvbG9yID0gdGV4dF9jb2xvcl9ob3ZlcjsNCiAgICAgICAgDQogICAgICAgIC8vUmVzdHlsZSBtYXJrZXIgY29sb3VycyBhbmQgYW5ub3RhdGlvbnMNCiAgICAgICAgUGxvdGx5LnJlc3R5bGUoZWwuaWQsIHsnbWFya2VyJzp7Y29sb3I6IGNvbG9yc319LCBbMF0pOw0KICAgICAgICBQbG90bHkucmVsYXlvdXQoZWwuaWQsIHsnYW5ub3RhdGlvbnMnOiBhbm5vdGF0aW9uc30pOw0KICAgIH0pOw0KICAgIA0KICAgIGVsLm9uKCdwbG90bHlfdW5ob3ZlcicsIGZ1bmN0aW9uKGRhdGEpIHsNCiAgICAgICAgdmFyIGJhcl9jb2xvcl91bmhvdmVyID0gJyNDMkUzRUMnOw0KICAgICAgICB2YXIgdGV4dF9jb2xvcl91bmhvdmVyID0gJyM0MDQwNDAnOw0KICAgICAgICANCiAgICAgICAgLy9HZXQgbnVtYmVyIG9mIHVuaGl2ZXJlZCBwb2ludA0KICAgICAgICBwb2ludE51bSA9IGRhdGEucG9pbnRzWzBdLnBvaW50TnVtYmVyOw0KDQogICAgICAgIC8vR2V0IGNvbG91cnMgYXJyYXkgYW5kIHVwZGF0ZSBjb2xvdXIgb2YgdW5ob3ZlcmVkIHBvaW50DQogICAgICAgIGNvbG9ycyA9IGRhdGEucG9pbnRzWzBdLmRhdGEubWFya2VyLmNvbG9yOw0KICAgICAgICBjb2xvcnNbcG9pbnROdW1dID0gYmFyX2NvbG9yX3VuaG92ZXI7DQogICAgICAgIA0KICAgICAgICAvL0dldCBhbm5vdGF0aW9ucyBhbmQgY2hhbmdlIHRleHQgY29sb3Igb2YgdGhlIHVuaG92ZXJlZCBwb2ludA0KICAgICAgICBhbm5vdGF0aW9ucyA9IGVsLmxheW91dC5hbm5vdGF0aW9uczsNCiAgICAgICAgYW5ub3RhdGlvbnNbcG9pbnROdW1dLmZvbnQuY29sb3IgPSB0ZXh0X2NvbG9yX3VuaG92ZXI7DQogICAgICAgIA0KICAgICAgICAvL1Jlc3R5bGUgbWFya2VyIGNvbG91cnMgYW5kIGFubm90YXRpb25zDQogICAgICAgIFBsb3RseS5yZXN0eWxlKGVsLmlkLCB7J21hcmtlcic6e2NvbG9yOiBjb2xvcnN9fSwgWzBdKTsNCiAgICAgICAgUGxvdGx5LnJlbGF5b3V0KGVsLmlkLCB7J2Fubm90YXRpb25zJzogYW5ub3RhdGlvbnN9KTsNCiAgICB9KTsNCiAgICANCiAgICAgZWwub24oJ3Bsb3RseV9jbGljaycsIGZ1bmN0aW9uKGRhdGEpIHsgDQogICAgIHZhciBwb2ludCA9IGRhdGEucG9pbnRzWzBdLA0KICAgICAgICBhbm5vdGF0ZV90ZXh0ID0gcG9pbnQuaG92ZXJ0ZXh0LA0KICAgICAgICBuZXdfYW5ub3RhdGlvbiA9IHsNCiAgICAgICAgICB0ZXh0OiBhbm5vdGF0ZV90ZXh0LA0KICAgICAgICAgIHg6IDUsDQogICAgICAgICAgeTogcG9pbnQueSwNCiAgICAgICAgICBzaG93YXJyb3c6IGZhbHNlLA0KICAgICAgICAgIGJnY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDEpJywNCiAgICAgICAgICBmb250OiB7ZmFtaWx5OidDYWxpYnJpJywgc2l6ZToxMn0sDQogICAgICAgICAgYm9yZGVyY29sb3I6ICc0MDQwNDAnLA0KICAgICAgICAgIGJvcmRlcndpZHRoOiAxLA0KICAgICAgICAgIGJvcmRlcnBhZDogMywNCiAgICAgICAgICBhbGlnbjogJ2xlZnQnLA0KICAgICAgICAgIHhhbmNob3I6ICdyaWdodCcNCiAgICAgICAgfSwNCiAgICAgICAgbmV3SW5kZXggPSAoZWwubGF5b3V0LmFubm90YXRpb25zIHx8IFtdKS5sZW5ndGg7DQogICAgICAgIA0KICAgICAgICBpZihuZXdJbmRleCkgew0KICAgICAgICB2YXIgZm91bmRDb3B5ID0gZmFsc2U7DQogICAgICAgIGVsLmxheW91dC5hbm5vdGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGFubiwgc2FtZUluZGV4KSB7DQogICAgICAgICBpZihhbm4udGV4dCA9PT0gbmV3X2Fubm90YXRpb24udGV4dCApIHsNCiAgICAgICAgICAgUGxvdGx5LnJlbGF5b3V0KGVsLmlkLCAnYW5ub3RhdGlvbnNbJyArIHNhbWVJbmRleCArICddJywgJ3JlbW92ZScpOw0KICAgICAgICAgICBmb3VuZENvcHkgPSB0cnVlOw0KICAgICAgICAgfQ0KICAgICAgIH0pOw0KICAgICAgIGlmKGZvdW5kQ29weSkgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgUGxvdGx5LnJlbGF5b3V0KGVsLmlkLCAnYW5ub3RhdGlvbnNbJyArIG5ld0luZGV4ICsgJ10nLCBuZXdfYW5ub3RhdGlvbikNCiAgfSk7DQogIA0KICAgZWwub24oJ3Bsb3RseV91bmhvdmVyJywgZnVuY3Rpb24oZGF0YSkgeyANCiAgICAgdmFyIG51bUFubm90YXRpb25zID0gKGVsLmxheW91dC5hbm5vdGF0aW9ucyB8fCBbXSkubGVuZ3RoLA0KICAgICAgICAgbnVtQmFycyA9IGRhdGEucG9pbnRzWzBdLmRhdGEueC5sZW5ndGg7DQogICAgICAgICBpZihudW1Bbm5vdGF0aW9ucyA+IG51bUJhcnMpIHsNCiAgICAgICAgIGxhc3RJbmRleCA9IG51bUFubm90YXRpb25zIC0gMTsNCiAgICAgICAgIFBsb3RseS5yZWxheW91dChlbC5pZCwgJ2Fubm90YXRpb25zWycgKyBsYXN0SW5kZXggKyAnXScsICdyZW1vdmUnKTsNCiAgICAgICAgfQ0KICB9KTsNCiAgICB9DQogICIpDQpgYGANCg0KDQoNCiA8ZGl2IHN0eWxlID0gImZsb2F0OmxlZnQ7IHdpZHRoOjQ1JTsiPg0KYGBge3J9DQpkc190ZWNoX3Bsb3QNCmBgYA0KIDwvZGl2Pg0KIA0KIDxkaXYgc3R5bGUgPSAiZmxvYXQ6cmlnaHQ7IHdpZHRoOjQ1JTsiPg0KYGBge3J9DQpkc190b29sc19wbG90DQpgYGANCiANCjwvZGl2Pg0KPGRpdiBzdHlsZSA9ICJjbGVhcjpib3RoIj4NCiANCiANCmBgYHtyIHJlc3VsdHM9RkFMU0V9DQpibHVlX3N0YXJzNCA8LSBwYXN0ZShwYXN0ZShyZXBsaWNhdGUoNCwgcGFzdGUwKCc8aW1nIHNyYz0iJywgaW1hZ2VfbG9jYXRpb24sICdzdGFyLWJsdWUuc3ZnIj4nKSksIGNvbGxhcHNlID0gIiIpLCBwYXN0ZTAoJzxpbWcgc3JjPSInLCBpbWFnZV9sb2NhdGlvbiwgJ3N0YXItZ3JleS5zdmciPicpLCBzZXA9IiIpDQoNCmJsdWVfc3RhcnM1IDwtIHBhc3RlKHJlcGxpY2F0ZSg1LCBwYXN0ZTAoJzxpbWcgc3JjPSInLCBpbWFnZV9sb2NhdGlvbiwgJ3N0YXItYmx1ZS5zdmciPicpKSwgY29sbGFwc2UgPSAiIikNCg0KYmx1ZV9zdGFyczIgPC0gcGFzdGUocGFzdGUocmVwbGljYXRlKDIsIHBhc3RlMCgnPGltZyBzcmM9IicsIGltYWdlX2xvY2F0aW9uLCAnc3Rhci1ibHVlLnN2ZyI+JykpLCBjb2xsYXBzZSA9ICIiKSwgcGFzdGUocmVwbGljYXRlKDMsIHBhc3RlMCgnPGltZyBzcmM9IicsIGltYWdlX2xvY2F0aW9uLCAnc3Rhci1ncmV5LnN2ZyI+JykpLCBjb2xsYXBzZSA9ICIiKSwgc2VwPSIiKQ0KYGBgDQogDQogDQo8ZGl2Pg0KPGRpdiBjbGFzcz0ic2VjdGlvbl90aXRsZV9sZWZ0Ij5MYW5ndWFnZXMgSSBzcGVhazwvZGl2PiANCjxkaXYgY2xhc3M9InNlY3Rpb25fdGl0bGVfcmlnaHQiPldoZXJlIEkgbGVhcm4gZGF0YSBzY2llbmNlPC9kaXY+ICANCjwvZGl2Pg0KIA0KPGRpdiBzdHlsZSA9ICJmbG9hdDpsZWZ0OyB3aWR0aDo0NSU7IHBhZGRpbmctYm90dG9tOjBweDsgbWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjIwc3B4IiI+DQo8dGFibGUgY2xhc3M9InRhYmxlMyIgc3R5bGU9IndpZHRoOjEwMCU7IG1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjBweCI+DQo8dHI+DQo8dGQgd2lkdGg9IjM4JSI+PGltZyBzcmM9IkM6L1VzZXJzL0p1cmdpdGEvRG9jdW1lbnRzL0RhdGEgU2NpZW5jZS9Qcm9qZWN0cy9DVi9JbWFnZXMvdWtfZmxhZy5wbmciPiBFbmdsaXNoPC90ZD4NCjx0ZCB3aWR0aD0iMzglIj48aW1nIHNyYz0iQzovVXNlcnMvSnVyZ2l0YS9Eb2N1bWVudHMvRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9saXRodWFuaWFfZmxhZy5wbmciPiBMaXRodWFuaWFuPC90ZD4NCjx0ZCB3aWR0aD0iMjQlIj48aW1nIHNyYz0iQzovVXNlcnMvSnVyZ2l0YS9Eb2N1bWVudHMvRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9zcGFpbl9mbGFnLnBuZyI+IFNwYW5pc2g8L3RkPg0KPC90cj4NCjx0cj4NCjx0ZD5gciBibHVlX3N0YXJzNGA8L3RkPg0KPHRkPmByIGJsdWVfc3RhcnM1YDwvdGQ+DQo8dGQ+YHIgYmx1ZV9zdGFyczJgPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPC9kaXY+DQoNCjxkaXYgc3R5bGUgPSAiZmxvYXQ6cmlnaHQ7IHdpZHRoOjQ1JTsgbWFyZ2luLXRvcDoxOHB4OyBtYXJnaW4tYm90dG9tOjIwcHgiPg0KPHRhYmxlIGNsYXNzPSJ0YWJsZTMiIHN0eWxlPSJ3aWR0aDoxMDAlOyBtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbTowcHgiPg0KPHRyPjx0ZCB3aWR0aD0iMzglIiBoZWlnaHQ9IjUwIj48aW1nIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9kYXRhY2FtcF9sb2dvLnBuZyIgd2lkdGg9IjcwJSI+PC90ZD4NCjx0ZCB3aWR0aD0iMzglIiBoZWlnaHQ9IjUwIj48aW1nIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9jb3Vyc2VyYV9sb2dvLnBuZyIgd2lkdGg9IjcwJSI+PC90ZD4NCjx0ZCB3aWR0aD0iMjQlIiBoZWlnaHQ9IjUwIj48aW1nIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9tZWV0dXBfbG9nby5wbmciIHdpZHRoPSIxMDAlIj48L3RkPjwvdHI+DQo8L3RhYmxlPg0KPC9kaXY+DQoNCjxkaXYgc3R5bGUgPSAiY2xlYXI6Ym90aCI+DQoNCjxkaXYgY2xhc3M9InNlY3Rpb25fdGl0bGUiPlRoaW5ncyBJIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogV2ViZGluZ3M7Ij7vgZk8L3NwYW4+PC9kaXY+ICANCiANCjxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbToyMHB4OyI+DQo8dGFibGUgY2xhc3M9InRhYmxlMyIgc3R5bGU9IndpZHRoOjEwMCU7Ij4NCjx0cj4NCjx0ZCB3aWR0aD0iMTcuOCUiIGhlaWdodD0iNDAiPjxpbWcgY2xhc3M9Im1pcnJvcl9pbWciIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy9iYWxsZXQuc3ZnIiBoZWlnaHQ9IjEwMCUiPkJhbGxldDwvdGQ+DQo8dGQgd2lkdGg9IjE3LjglIiBoZWlnaHQ9IjQwIj48aW1nIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy95b2dhLnN2ZyIgaGVpZ2h0PSIxMDAlIj5Zb2dhPC90ZD4NCjx0ZCB3aWR0aD0iMTcuOCUiIGhlaWdodD0iNDAiPjxpbWcgc3JjPSJEYXRhIFNjaWVuY2UvUHJvamVjdHMvQ1YvSW1hZ2VzL3RoZWF0cmUuc3ZnIiBoZWlnaHQ9IjExMCUiPiBUaGVhdHJlPC90ZD4NCjx0ZCB3aWR0aD0iMTcuOCUiIGhlaWdodD0iNDAiPjxpbWcgc3JjPSJEYXRhIFNjaWVuY2UvUHJvamVjdHMvQ1YvSW1hZ2VzL3Bob3RvZ3JhcGh5LnN2ZyIgaGVpZ2h0PSI3NSUiPiBQaG90b2dyYXBoeTwvdGQ+DQo8dGQgd2lkdGg9IjE3LjglIiBoZWlnaHQ9IjQwIj48aW1nIHNyYz0iRGF0YSBTY2llbmNlL1Byb2plY3RzL0NWL0ltYWdlcy90cmF2ZWwxLnN2ZyIgaGVpZ2h0PSI5MCUiPiBUcmF2ZWw8L3RkPg0KPHRkIHdpZHRoPSIxMSUiIGhlaWdodD0iNDAiPjxpbWcgc3JjPSJEYXRhIFNjaWVuY2UvUHJvamVjdHMvQ1YvSW1hZ2VzL2Nvb2tpbmczLnN2ZyIgaGVpZ2h0PSI4MCUiPiBDb29raW5nPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPC9kaXY+DQoNCg0KPGRpdiBzdHlsZT0icGFnZS1icmVhay1hZnRlcjphbHdheXM7Ij4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPC9kaXY+DQoNCg0KIyMjIERldGFpbGVkIFZpZXcNCg0KPGRpdiBjbGFzcz0iYnJfc21hbGwiPjxicj48L2Rpdj4NCg0KPGRpdiBjbGFzcz0ic2VjdGlvbl90aXRsZSI+S2V5IHRlY2huaWNhbCBza2lsbHM8L2Rpdj4NCg0KPGRpdiBjbGFzcz0ibGlzdF9ibHVlIiBzdHlsZSA9ICJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MzBweDsgcGFkZGluZy10b3A6MHB4OyBwYWRkaW5nLWJvdHRvbTowcHg7Ij4NCiogQWJpbGl0eSB0byBtYW5pcHVsYXRlIGxhcmdlIHZvbHVtZXMgb2YgZGF0YQ0KKiBQcm9maWNpZW5jeSBpbiBTUUwNCiogU3Ryb25nIFIgcHJvZ3JhbW1pbmcgc2tpbGxzDQoqCUV4dGVuc2l2ZSBleHBlcmllbmNlIHdpdGggdmFyaW91cyBTQVMgdG9vbHMgKEVHLCBFTSwgREkpDQoqCVRob3JvdWdoIHVuZGVyc3RhbmRpbmcgb2YgZW5kLXRvLWVuZCBtb2RlbGxpbmcgcHJvY2VzczogZXhwbG9yYXRvcnkgZGF0YSBhbmFseXNpcywgc2FtcGxpbmcsIGZlYXR1cmUgZW5naW5lZXJpbmcgYW5kIHNlbGVjdGlvbiwgbW9kZWwgdmFsaWRhdGlvbiBhbmQgY29tcGFyaXNvbg0KKglFeHRlbnNpdmUgZXhwZXJpZW5jZSB3aXRoIHN0YXRpc3RpY2FsIGFuYWx5c2lzIHRlY2huaXF1ZXMgYW5kIG1hY2hpbmUgbGVhcm5pbmcgYWxnb3JpdGhtcyAocmVncmVzc2lvbiwgZGVjaXNpb24gdHJlZXMsIGNsdXN0ZXJpbmcsIGNvbGxhYm9yYXRpdmUgYW5kIGNvbnRlbnQtYmFzZWQgcmVjb21tZW5kYXRpb24gc3lzdGVtcykNCioJRXhwZXJpZW5jZSBkZXBsb3lpbmcgbW9kZWxzIHRvIHByb2R1Y3Rpb24NCioJR29vZCB3b3JraW5nIGtub3dsZWRnZSBvZiBSIFNoaW55LCBUYWJsZWF1IGFuZCBkYXRhIHZpc3VhbGlzYXRpb24gcHJpbmNpcGxlcw0KKglFeHBlcmllbmNlIGluIHNwYXRpYWwgZGF0YSBhbmFseXNpcyB1c2luZyBBcmNHSVMsIFRhYmxlYXUsIGFuZCBSDQoqCUFkdmFuY2VkIGtub3dsZWRnZSBvZiBNaWNyb3NvZnQgRXhjZWwgYW5kIGhhbmRzLW9uIGV4cGVyaWVuY2Ugd2l0aCBWQkEgcHJvZ3JhbW1pbmcNCioJRXhwZXJpZW5jZSB3aXRoIHZlcnNpb24gY29udHJvbCB0b29scyAoR2l0IGFuZCBCaXRidWNrZXQpDQoqCUV4cGVyaWVuY2Ugd29ya2luZyBpbiBhbiBhZ2lsZSBlbnZpcm9ubWVudA0KPC9kaXY+DQoNCg0KDQo8ZGl2IGNsYXNzPSJzZWN0aW9uX3RpdGxlIj5Qcm9mZXNzaW9uYWwgZXhwZXJpZW5jZTwvZGl2Pg0KDQo8ZGl2IHN0eWxlID0gIm1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbTozMHB4OyI+DQo8ZGl2IGNsYXNzPSJsaXN0X2JsdWUiIHN0eWxlID0gIm1hcmdpbi10b3A6MHB4OyBtYXJnaW4tYm90dG9tOjIwcHg7Ij4NCjxwPg0KPHNwYW4gc3R5bGU9ImNvbG9yOiMwMDk5Y2M7Ij48Yj5TZW5pb3IgRGF0YSBTY2llbnRpc3Q8L2I+PC9zcGFuPg0KPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+PGk+TG9uZG9uPC9pPjwvc3Bhbj48YnI+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzQwNDA0MDsiPjxiPlRoZSBWZXJ5IEdyb3VwPC9iPjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpPlNlcCAyMDE5IHRvIHByZXNlbnQ8L2k+PC9zcGFuPjxicj4NCjwvcD4NCjxwPg0KPGk+V29ya2luZyBjbG9zZWx5IHdpdGggYSBjcm9zcy1mdW5jdGlvbmFsIHBlcnNvbmFsaXNhdGlvbiB0ZWFtIHRvIGlkZW50aWZ5IGFuZCBkZWxpdmVyIHByb2plY3RzIHRoYXQgd2lsbCBkcml2ZSBlbWFpbCBwcm9ncmFtbWUgdmFsdWUgdGhyb3VnaCBjb250ZW50IHBlcnNvbmFsaXNhdGlvbi48L2k+DQo8L3A+DQoNCioJRGVzaWduZWQgYW5kIGRldmVsb3BlZCBhIHByb3RvdHlwZSBzb2x1dGlvbiBmb3IgYSBjb250ZW50LWJhc2VkIHByb2R1Y3QgcmVjb21tZW5kYXRpb24gZW5naW5lIHRoYXQgZW5oYW5jZWQgcGVyc29uYWxpc2F0aW9uIGNhcGFiaWxpdGllcyBvZiBvdXIgZW1haWwgdHJpZ2dlciBwcm9ncmFtbWUgYW5kIGRlbGl2ZXJlZCDCozM2MGsgaW5jcmVtZW50YWwgc2FsZXMgaW4gYSA2IHdlZWsgdGVzdCBwZXJpb2Q7DQoqIERldmVsb3BlZCBhbmQgcHJvZHVjdGlvbmlzZWQgYSBjbG90aGluZyBzaXplIHByZWRpY3Rpb24gYWxnb3JpdGhtIHRoYXQgd2lsbCBhbGxvdyB0byBpbXByb3ZlIHJlbGV2YW5jeSBvZiB0aGUgcHJvZHVjdC1iYXNlZCBlbWFpbCBjYW1wYWlnbnM7DQoqIElkZW50aWZpZWQgYW5kIHZhbGlkYXRlZCBuZXcgZGF0YSBzb3VyY2VzIGZvciBtb3JlIHRpbWVseSBhbmQgYWNjdXJhdGUgcHJvZHVjdCBwcmljZSBpbmZvcm1hdGlvbiwgYW5kIGRldmVsb3BlZCBhIHByb2Nlc3MgdG8gZW5hYmxlIGltcGxlbWVudGF0aW9uIG9mIGEgcHJpY2UgZHJvcCBub3RpZmljYXRpb24gZW1haWwuIFRoZSBwcm9ncmFtbWUgZ2VuZXJhdGVkIMKjMzM1ayBpbmNyZW1lbnRhbCBzYWxlcyBpbiBhIDkgd2VlayBleHBlcmltZW50IHBlcmlvZCB3aXRoIGVzdGltYXRlZCBhbm51YWwgYmVuZWZpdHMgb2YgwqMzLjVtOw0KKiBNZW50b3JlZCBhIG1hc3RlcnMgc3R1ZGVudCB0aHJvdWdoIENEUkMgTWFzdGVycyBSZXNlYXJjaCBEaXNzZXJ0YXRpb24gUHJvZ3JhbW1lOw0KKglTdXBwb3J0aW5nIGFuZCB0cmFpbmluZyBqdW5pb3IgdGVhbSBtZW1iZXJzIHRocm91Z2hvdXQgdGhlIHByb2plY3QgdG8gaGVscCB0aGVtIGRlbGl2ZXIgYXQgdGhlaXIgYmVzdDsNCioJQXNzaXN0aW5nIHdpdGggcmVjcnVpdG1lbnQgb2YgbmV3IHRlYW0gbWVtYmVycyBieSBldmFsdWF0aW5nIGRhdGEgY2hhbGxlbmdlIGFzc2lnbm1lbnQgYW5kIGNvbmR1Y3RpbmcgaW50ZXJ2aWV3cy4gICANCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9Imxpc3RfYmx1ZSIgc3R5bGUgPSAibWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MjBweDsiPg0KPHA+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzAwOTljYzsiPjxiPkRhdGEgU2NpZW50aXN0PC9iPjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpPkxvbmRvbjwvaT48L3NwYW4+PGJyPg0KPHNwYW4gc3R5bGU9ImNvbG9yOiM0MDQwNDA7Ij48Yj5UaGUgVmVyeSBHcm91cDwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5BcHIgMjAxOCAmbmRhc2g7IEF1ZyAyMDE5PC9pPjwvc3Bhbj48YnI+DQo8L3A+DQo8L2Rpdj4NCg0KPGRpdiBjbGFzcz0ibGlzdF9ibHVlIiBzdHlsZSA9ICJtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbToyMHB4OyI+DQo8cD4NCjxzcGFuIHN0eWxlPSJjb2xvcjojMDA5OWNjOyI+PGI+TW9kZWxsaW5nIGFuZCBPcHRpbWlzYXRpb24gQW5hbHlzdDwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5Mb25kb248L2k+PC9zcGFuPjxicj4NCjxzcGFuIHN0eWxlPSJjb2xvcjojNDA0MDQwOyI+PGI+Sm9obiBMZXdpcyBQYXJ0bmVyc2hpcDwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5Ob3YgMjAxNSAmbmRhc2g7IE1hciAyMDE5PC9pPjwvc3Bhbj48YnI+DQo8L3A+DQo8cD4NCjxpPlNjb3BpbmcgYW5kIGRldmVsb3BpbmcgcHJlZGljdGl2ZSB0YXJnZXRpbmcgbW9kZWxzIHVzaW5nIGN1c3RvbWVyIHRyYW5zYWN0aW9uYWwgYW5kIGJlaGF2aW91cmFsIGRhdGEgdG8gaW1wcm92ZSBwZXJzb25hbGlzYXRpb24gYW5kIGVmZmVjdGl2ZW5lc3Mgb2YgbWFya2V0aW5nIGNvbW11bmljYXRpb24gcHJvZ3JhbW1lcy48L2k+DQo8L3A+DQoNCiogRGV2ZWxvcGVkIGEgc3VpdCBvZiBwcm9wZW5zaXR5IG1vZGVscyB0byBwcmVkaWN0IGN1c3RvbWVy4oCZcyBsaWtlbGlob29kIHRvIHNob3AgaW4gdGhpcnR5IGRpZmZlcmVudCBwcm9kdWN0IGNhdGVnb3JpZXMgd2hpY2ggbGVkIHRvIHNpZ25pZmljYW50bHkgaW1wcm92ZWQgZW1haWwgY2FtcGFpZ24gcGVyc29uYWxpc2F0aW9uIGFuZCBpbmNyZWFzZWQgc2FsZXM7DQoqCUFwcGxpZWQgYXNzb2NpYXRpb24gcnVsZSBkaXNjb3ZlcnkgYWxnb3JpdGhtIHRvIGNyZWF0ZSBwcm9kdWN0IGFuZCBicmFuZCBsZXZlbCByZWNvbW1lbmRhdGlvbnMgZm9yIGZhc2hpb24gZW1haWwgY2FtcGFpZ25zOw0KKglBY3RpdmVseSBjb250cmlidXRlZCB0byB0aGUgZGV2ZWxvcG1lbnQgYW5kIGF1dG9tYXRpb24gb2YgdGhlIG1vZGVsbGluZyBwcm9jZXNzZXMsIG1vZGVsIG1vbml0b3JpbmcgYW5kIHBlcmZvcm1hbmNlIHJlcG9ydGluZy4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9Imxpc3RfYmx1ZSIgc3R5bGUgPSAibWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MjBweDsiPg0KPHA+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzAwOTljYzsiPjxiPkNhbXBhaWduIEFuYWx5c3Q8L2I+PC9zcGFuPg0KPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+PGk+TG9uZG9uPC9pPjwvc3Bhbj48YnI+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzQwNDA0MDsiPjxiPkpvaG4gTGV3aXMgUGFydG5lcnNoaXA8L2I+PC9zcGFuPg0KPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+PGk+SnVsIDIwMTUgJm5kYXNoOyBPY3QgMjAxNTwvaT48L3NwYW4+PGJyPg0KPC9wPg0KPHA+DQo8aT5TdXBwb3J0ZWQgSm9obiBMZXdpcyBEaXZpc2lvbiB0aHJvdWdoIHRoZSBlZmZlY3RpdmUgZGVzaWduIGFuZCBkZWxpdmVyeSBvZiBjdXN0b21lciBpbnNpZ2h0IGxlZCBtYXJrZXRpbmcgY29tbXVuaWNhdGlvbnMuPC9pPg0KPC9wPg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0ibGlzdF9ibHVlIiBzdHlsZSA9ICJtYXJnaW4tdG9wOjBweDsgbWFyZ2luLWJvdHRvbToyMHB4OyI+DQo8cD4NCjxzcGFuIHN0eWxlPSJjb2xvcjojMDA5OWNjOyI+PGI+SW5zaWdodCBBbmFseXN0PC9iPjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpPkxvbmRvbjwvaT48L3NwYW4+PGJyPg0KPHNwYW4gc3R5bGU9ImNvbG9yOiM0MDQwNDA7Ij48Yj5BaW1pYTwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5KYW4gMjAxMyAmbmRhc2g7IEp1biAyMDE1PC9pPjwvc3Bhbj48YnI+DQo8L3A+DQo8cD4NCjxpPldvcmtlZCBvbiB0aGUgbWFya2V0aW5nIHNpZGUgb2YgTmVjdGFyIHRlYW0gcHJvdmlkaW5nIG1hcmtldGluZyBhbmQgYW5hbHl0aWNhbCBpbnRlbGxpZ2VuY2UgdG8gaGVscCBtYXhpbWl6ZSB0aGUgYmVuZWZpdHMgb2YgdGhlIGxveWFsdHkgcHJvZ3JhbW1lLjwvaT4NCjwvcD4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9Imxpc3RfYmx1ZSIgc3R5bGUgPSAibWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MjBweDsiPg0KPHA+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzAwOTljYzsiPjxiPk1JUyBBbmFseXN0PC9iPjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpPkxvbmRvbjwvaT48L3NwYW4+PGJyPg0KPHNwYW4gc3R5bGU9ImNvbG9yOiM0MDQwNDA7Ij48Yj5Fc3NlbmNlIERpZ2l0YWw8L2I+PC9zcGFuPg0KPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+PGk+RmViIDIwMTEgJm5kYXNoOyBEZWMgMjAxMjwvaT48L3NwYW4+PGJyPg0KPC9wPg0KPHA+DQo8aT5SZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgZXhpc3RpbmcsIGFuZCBkZXZlbG9waW5nIG5ldyBwcm9jZXNzZXMgZm9yIHRoZSBkYWlseSB0cmFuc2ZlciwgaW1wb3J0IGFuZCB0cmFuc2Zvcm1hdGlvbiBvZiBtYXJrZXRpbmcgcGVyZm9ybWFuY2UgZGF0YSBjb21iaW5lZCBmcm9tIGRpc3BhcmF0ZSBzb3VyY2VzIChhZCBzZXJ2ZXJzLCBzZWFyY2ggZW5naW5lcywgY2xpZW50IGRhdGEpLjwvaT4NCjwvcD4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9Imxpc3RfYmx1ZSIgc3R5bGUgPSAibWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyI+DQo8cD4NCjxzcGFuIHN0eWxlPSJjb2xvcjojMDA5OWNjOyI+PGI+UmVzZWFyY2ggT3V0cHV0IFJlc2VhcmNoZXIsIFRhbGVudCBCdWlsZGVyIFRyYWluaW5nIFByb2dyYW1tZTwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5Ob3R0aW5naGFtPC9pPjwvc3Bhbj48YnI+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzQwNDA0MDsiPjxiPlVuaXZlcnNpdHkgb2YgTm90dGluZ2hhbSwgSW5mb3JtYXRpb24gU2VydmljZXMgRGVwYXJ0bWVudDwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5PY3QgMjAxMCAmbmRhc2g7IERlYyAyMDEwPC9pPjwvc3Bhbj48YnI+DQo8L3A+DQo8L2Rpdj4NCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InNlY3Rpb25fdGl0bGUiPkVkdWNhdGlvbjwvZGl2Pg0KDQo8ZGl2IHN0eWxlID0gIm1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWJvdHRvbToyNXB4OyI+DQo8ZGl2IGNsYXNzPSJsaXN0X2JsdWUiIHN0eWxlID0gIm1hcmdpbi10b3A6MTBweDsgbWFyZ2luLWJvdHRvbToxNXB4OyI+DQo8cD4NCjxzcGFuIHN0eWxlPSJjb2xvcjojMDA5OWNjOyI+PGI+VGhlIFVuaXZlcnNpdHkgb2YgTm90dGluZ2hhbTwvYj48L3NwYW4+DQo8c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij48aT5Ob3R0aW5naGFtPC9pPjwvc3Bhbj48YnI+DQo8c3BhbiBzdHlsZT0iY29sb3I6IzQwNDA0MDsiPjxiPk1TYyBpbiBFY29ub21pY3MgYW5kIEVjb25vbWV0cmljczwvYj48aT4gJm5kYXNoOyAyOjEgKEF2ZXJhZ2U6IDY4JSk8L2k+PC9zcGFuPg0KPHNwYW4gc3R5bGU9ImZsb2F0OnJpZ2h0OyI+PGk+U2VwIDIwMDkgJm5kYXNoOyBTZXAgMjAxMDwvaT48L3NwYW4+PGJyPg0KPC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9Imxpc3RfYmx1ZSIgc3R5bGUgPSAibWFyZ2luLXRvcDowcHg7IG1hcmdpbi1ib3R0b206MHB4OyI+DQo8cD4NCjxzcGFuIHN0eWxlPSJjb2xvcjojMDA5OWNjOyI+PGI+Vmlsbml1cyBVbml2ZXJzaXR5PC9iPjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpPlZpbG5pdXMsIExpdGh1YW5pYTwvaT48L3NwYW4+PGJyPg0KPHNwYW4gc3R5bGU9ImNvbG9yOiM0MDQwNDA7Ij48Yj5CU2MgaW4gRWNvbm9taWNzPC9iPjxpPiAoQXZlcmFnZTogOS40IGluIHRlbi1ncmFkZSBzeXN0ZW0pPC9pPjwvc3Bhbj4NCjxzcGFuIHN0eWxlPSJmbG9hdDpyaWdodDsiPjxpPlNlcCAyMDA1ICZuZGFzaDsgSnVuIDIwMDk8L2k+PC9zcGFuPjxicj4NCjwvcD4NCjwvZGl2Pg0KPC9kaXY+DQoNCg0KPGRpdiBjbGFzcz0ic2VjdGlvbl90aXRsZSI+TGFuZ3VhZ2Ugc2tpbGxzPC9kaXY+DQoNCjxkaXYgY2xhc3M9Imxpc3RfYmx1ZSIgc3R5bGUgPSAibWFyZ2luLXRvcDoyMHB4OyBtYXJnaW4tYm90dG9tOjI1cHg7Ij4NCiogRW5nbGlzaCDigJMgRmx1ZW50DQoqCVNwYW5pc2gg4oCTIEludGVybWVkaWF0ZQ0KKglMaXRodWFuaWFuIOKAkyBOYXRpdmUNCjwvZGl2Pg0KDQoNCjxkaXYgY2xhc3M9InNlY3Rpb25fdGl0bGUiPlJlZmVyZW5jZXM8L2Rpdj4NCg0KPGRpdiBzdHlsZSA9ICJtYXJnaW4tdG9wOjIwcHg7IG1hcmdpbi1ib3R0b206MjBweCI+DQpBdmFpbGFibGUgb24gcmVxdWVzdC4NCjwvZGl2Pg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo=